// Copyright (c) 2021 FlyCV Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "modules/img_transform/subtract/include/subtract_common.h"

G_FCV_NAMESPACE1_BEGIN(g_fcv_ns)

void subtract_common(
        const float* src,
        const int width,
        const int height,
        const int stride,
        const int channel,
        Scalar scalar,
        float* dst) {
    for (int i = 0; i < height; i++) {
        float *src0 = (float*)src;
        float *dst0 = (float*)dst;
        for (int j = 0; j < width; j++) {
            for (int c = 0; c < channel; c++) {
                *(dst0++) = static_cast<float>(*(src0++) - scalar[c]);
            }
        }
        src += stride;
        dst += stride;
    }
}

G_FCV_NAMESPACE1_END()